package t

import (
	"math"
)

// 求最长公共前缀
func LongestCommonPrefix(strs []string) string {
	s := 0
	l := len(strs)
	prefix := strs[s]
	prefix = handle(strs, prefix, s, l)

	return prefix
}

func handle(strs []string, strs1 string, s int, l int) string{
	if (s >= l) {
		return strs1
	}
	prefix := getPrefix(strs1, strs[s])
	prefix = handle(strs, prefix, s+1, l)

	return prefix
}

func getPrefix (str1 string, str2 string) string {
	prefix := ""
	l := math.Min(float64(len(str1)), float64(len(str2)))
	for i:=0; i<int(l); i++ {
		if str1[i] == str2[i] {
			prefix = prefix + string(str1[i])
		}else {
			break
		}
	}

	return prefix
}


// 循环
func LongestCommonPrefix1(strs []string) string {
	prefix := strs[0]
	l := len(strs)
	for i:=1; i<l; i++ {
		temp := ""
		tmp_len := math.Min(float64(len(strs[i])), float64(len(prefix)))
		for j:=0; j< int(tmp_len); j++  {
			if (strs[i][j] == prefix[j]) {
				temp = temp + string(prefix[j])
			}else {
				break
			}
		}
		prefix = temp
	}

	return prefix
}